package main

import (
	"fmt"
	"math/rand"
	"time"
)

/*使用go编写随机点名系统
切片类型存放全班同学的名字：["史伟名","易鸽玲"]
按任意键，不限次数随机抽取切片中的某一个同学名字回答问题
		 抽取到的同学就从切片中删除
按q退出，或者切片里面所有的同学都已近被抽到*/

func main()  {
	var name = []string{"史伟名","易鸽玲","李泉","潘林枫","夏彪"}

	for  {
		fmt.Println("按下任意字符键(按q退出)：")
		var input string
		fmt.Scanln(&input)
		if input == "q" {
			break
		}
		// 生成随机索引
		randomIndex := test1(len(name))

		// 随机选择一个同学名字回答问题
		answername := name[randomIndex]
		fmt.Println("回答问题的同学是：", answername)

		//将抽取到的同学从切片中删除
		copy(name[randomIndex:], name[randomIndex+1:])
		name = name[:len(name)-1]

		if len(name) == 0{
			fmt.Printf("切片里面所有的同学都已经被抽到")
			break
		}
	}

}

func test1(num int) int {
	/*
	test1 是函数的名称，根据实际需求可以自定义一个有意义的函数名。
	(num int) 是函数的参数列表，指定了函数接收的参数。在这个例子中，函数接受一个名为 num 的整数类型参数。
	int 是函数的返回类型，指定了函数返回的结果类型。在这个例子中，函数返回一个整数。
	*/
	//为随机数生成器设置种子的操作。
	rand.Seed(time.Now().UnixNano())

	return rand.Intn(num)
}